home *** CD-ROM | disk | FTP | other *** search
/ Macworld Expo - Develope…Central & Net Innovations / Developer Central and Net Innovators (MacWorld Expo) (January 1999).iso / Developer Central / Metrowerks CodeWarrior / CodeWarrior Pro 4 Release Notes / PowerPlant Notes / PP 1.9.1 Notes < prev    next >
Encoding:
Text File  |  1998-08-19  |  28.8 KB  |  1,154 lines  |  [TEXT/CWIE]

  1. ========================================================================
  2. PowerPlant Core Classes Notes
  3. ========================================================================
  4.  
  5. Version: PowerPlant 1.9.1
  6. Date:     August 19, 1998
  7. ========================================================================
  8.     
  9.  
  10. ========================================================================
  11. Changes Required for Existing Projects
  12. ========================================================================
  13.  
  14. * You may need to add the following files to your project:
  15.  
  16.     PP_Constants.cp
  17.     AppearanceLib
  18.     UClassicDialogs.cp
  19.     UModalDialogs.cp
  20.     UKeyFilters.cp
  21.     
  22.     - PP_Constants.cp (inside the PP Headersfolder) contains the
  23.         definitions of Str_Empty, Point_00, and Rect_0000. Putting
  24.         these definitions in a .cp file rather than a header saves
  25.         data space.
  26.         
  27.     - Projects with PPC targets must include AppearanceLib. After
  28.         adding this file (path {Compiler}:MacOS Support:Libraries:
  29.         MacOS Common), make sure to set the "Import Weak" option by
  30.         using the Project Inspector (select the file in the project
  31.         window and choose "Project Inspector" from the Window menu).
  32.     
  33.         If you don't "Import Weak", your program will not launch on
  34.         machines that don't have the Appearance Manager.
  35.         
  36.     - The LDocument class uses UClassicDialogs.cp by default, but
  37.         you should consider using the new Navigation Services support.
  38.         See the "PP Standard Dialogs Note".
  39.         
  40.     - LApplication uses new routines in UModalDialogs.cp and
  41.         UKeyFilters.cp for displaying alerts.
  42.     
  43. * Removed support for PP_Obsolete_Constants and PP_Obsolete_Array_API
  44.  
  45. * StResource::Release() is now named StResource::Dispose() to
  46.     adhere to naming conventions used in other classes.
  47.     
  48. * Removed function UGraphicUtils::InitGraphicUtils(). This function
  49.     just called UEnvironment::InitEnvironment(), so call that
  50.     function directly if you need to.
  51.     
  52. * Moved the comparison operators for RGBColor, Point, and Rect
  53.     that were in UGraphicUtils.h to a new file called
  54.     UQDOperators.h. You may need to #include <UQDOperators.h>
  55.     in files where you use those operators.
  56.     
  57. * gDebugThrow and gDebugSignal globals moved inside the
  58.     UDebugging namespace. If you access them directly, you
  59.     need to qualify the name:
  60.     
  61.         PP_PowerPlant::UDebugging::gDebugThrow
  62.         PP_PowerPlant::UDebugging::gDebugSignal
  63.         
  64. * If you have subclasses of LDocument that use the inherited
  65.     LDocument::AskSaveAs() function [instead of overriding it],
  66.     you should override the new LDocument::GetFileType() function
  67.     to return the file type (four character code) used for
  68.     saving your documents. The Navigation Services requires
  69.     this information.
  70.     
  71.     Standard File doesn't need to know the file type, so you don't
  72.     have to override GetFileType() if you use the Classic Dialogs.
  73.     However, we strongly recommend that you add the override
  74.     anyway. It's very little code and you'll have to update to
  75.     Nav Services eventually if you want your program to run natively
  76.     under Mac OS X.
  77.  
  78.  
  79. ========================================================================
  80. Significant New Features
  81. ========================================================================
  82.  
  83. * New classes for using Navigation Services (see separate note file
  84.     about PP Standard Dialogs)
  85.     
  86. * New classes with better support for StandardFile (see separate note
  87.     file about PP Standard Dialogs)
  88.  
  89. * New LString functions for dealing with floating point numbers
  90.     using flexible formatting options.
  91.  
  92. * New LString functions for using Int16 numbers
  93.  
  94. * New LStringRef class which lets you use LString functions to
  95.     manipulate an arbitrary string
  96.     
  97. * New LTabGroupView class. All Panes that are also Commanders
  98.     enclosed within a LTabGroupView are part of a tab group.
  99.     Similar to LRadioGroupView.
  100.     
  101. * New UModalAlerts class (within UModalDialogs.h/.cp) with wrappers
  102.     for the Toolbox Alert() calls. The wrappers deactivate the
  103.     desktop and supply an event filter for handling events while
  104.     the alert window is displayed.
  105.     
  106. * New classes for supporting Contextual Menus.
  107.  
  108. * New LAppearanceMBAR class. Calls ::MenuEvent(), a new Menu
  109.     Manager call introduced with the Appearance Manager that
  110.     supports menu key equivalents beyond just the Command key.
  111.  
  112.  
  113. ========================================================================
  114. General Changes
  115. ========================================================================
  116.  
  117. * Added a PowerPlant namespace controlled via macros
  118.     PP_Macros.h #define's
  119.         PP_Begin_Namespace_PowerPlant
  120.         PP_End_Namespace_PowerPlant
  121.         
  122.     controlled by the symbol
  123.         PP_Uses_PowerPlant_Namespace
  124.         
  125.     The default value for PP_Uses_PowerPlant_Namespace is 0 (false)
  126.     for this release. In the future, it will default to true.
  127.     
  128.     If you wish to activate the PowerPlant namespace, put
  129.         #define PP_Uses_PowerPlant_Namespace 1
  130.     in your prefix file.
  131.     
  132.     If you do activate the PowerPlant namespace, you will need
  133.     to explicity qualify PowerPlant types or use a "using"
  134.     declaration. For example,
  135.     
  136.         PowerPlant::LPane    *thePane;    // explicit qualifier
  137.         
  138.     or
  139.     
  140.         using namespace PowerPlant;        // using declaration
  141.         
  142.         LPane    *thePane;                // Refers to PowerPlant::LPane
  143.         
  144.     For convenience, you may want to define a namespace alias:
  145.     
  146.         namespace PowerPlant { }        // Forward declaration
  147.         namespace PP = PowerPlant;        // Alias
  148.         
  149.         PP::LPane    *thePane;            // Use alias. Less typing.
  150.         
  151.     The forward declaration of the PowerPlant namespace is needed
  152.     if you define your alias before #include'ing any PP code,
  153.     such as in a prefix file.
  154.         
  155.     A subtle issue with namespaces occurs with forward class
  156.     declarations. You need to specify the namespace. For example,
  157.     
  158.         class LPane;        // Will get errors if using namespaces
  159.         
  160.         namespace PowerPlant {    // The right way
  161.             class LPane;    // forward declaration with namespaces
  162.         }
  163.         
  164.     Or, if you want to use the conditional macros:
  165.         
  166.         PP_Begin_Namespace_PowerPlant
  167.             class LPane;
  168.         PP_End_Namespace_PowerPlant
  169.  
  170.     Also, don't put your own classes in the PowerPlant namespace.
  171.     It is reserved for Metrowerks code. Define your own namespace
  172.     for your code (or use none at all). This will prevent naming
  173.     conflicts with future releases of PowerPlant.
  174.  
  175. * Use FOUR_CHAR_CODE macro to define constants such as 'abcd'
  176.  
  177. * PP is migrating to use the Universal Header typedef's for
  178.     integer types in MacTypes.h rather than the ones in PP_Types.h.
  179.     
  180.         Type                MacTypes            PP_Types
  181.         ----                --------            --------
  182.         signed char            SInt8                Int8
  183.         signed short        SInt16                Int16
  184.         signed long            SInt32                Int32
  185.         
  186.         unsigned char        UInt8                Uint8
  187.         unsigned short        UInt16                Uint16
  188.         unsigned long        UInt32                Uint32
  189.         
  190.     The PP types are deprecated (still around, but will go away
  191.     some time in the future). The PP_Uses_Old_Integer_Types
  192.     preprocessor symbol (see PP_Macros.h) controls whether the
  193.     PP Types are defined.
  194.     
  195. * Names of all the PowerPlant precompiled header binaries
  196.     changed to end with ++ (for example, PP_MacHeaders68K++).
  197.     This conforms to the naming conventions used by the
  198.     standard MacHeaders files. This change should not affect
  199.     existing projects, as you should always use the .h file
  200.     (for example, PP_MacHeaders.h) as a prefix file rather
  201.     than the precompiled binary file.
  202.     
  203. * Minor re-organization of files within the PowerPlant folder
  204.     - New "Standard Dialogs" folder contains new files for
  205.         supporting Navigation Services and Classic Dialogs.
  206.         Moved UStandardFiles and UModalDialogs files into this folder.
  207.         
  208.     - New "Menu Classes" folder contains LMenu, LMenuBar, LMercutioMBAR,
  209.         and LAppearanceMBAR files. Contextual Menus and Menu Utilities
  210.         classes that are currently "In Progress" will move here
  211.         in a later release.
  212.         
  213.  
  214.  
  215. ========================================================================
  216. Class Status Changes
  217. ========================================================================
  218.  
  219. * Database classes moved to Obsolete
  220.  
  221.  
  222. ========================================================================
  223. Source Code Changes
  224. ========================================================================
  225.  
  226. ColorAlertIcons.rsrc
  227. --------------------
  228. * Updated to Mac OS 8 versions
  229.  
  230.  
  231. LAMBevelButtonImp
  232. -----------------
  233. * SetValue()
  234.     New override. Uses StBevelMenuSetter to set the MenuHandle before
  235.     calling the inherited routine.
  236.     
  237.  
  238. LAMControlImp
  239. -------------
  240. * SetTextTraitsID()
  241.     Don't set forecolor value and mask if color is black. This
  242.     lets the Toolbox dim black text when inactive.
  243.     
  244. * DeactivaeSelf()
  245.     Do nothing if Toolbox control is already inactive.
  246.     
  247.  
  248. LAMPopupGroupBoxImp
  249. -------------------
  250. * PostSetValue()
  251.     Check for special empty menu rather than nil to determine if we
  252.     need to draw the popup box
  253.  
  254.  
  255. LAMStaticTextImp
  256. ----------------
  257. * ActivateSelf()
  258. * DeactivateSelf()
  259.     New overrides. Deactivating lightens the text color and activating
  260.     restores the original color.
  261.     
  262.  
  263. LAMTabsControlImp
  264. -----------------
  265. * FocusImp()
  266.     Call inherited FocusImp()
  267.     
  268.     
  269. LAMTrackActionImp
  270. -----------------
  271. * TrackAction()
  272.     Add try/catch block to prevent exception from going back
  273.     through the Toolbox
  274.     
  275.  
  276. LAppearanceMBAR
  277. ---------------
  278. * New class. Use this class instead of LMenuBar (or LMercutioMBAR)
  279.     to support menu key equivalents beyond the Command key. Requires
  280.     the Appearance Manager, so you should check for AM beforehand.
  281.  
  282.  
  283. LApplication
  284. ------------
  285. * LApplication()
  286.     Call UEnvironment::InitEnvironment(). Remove check for ColorQD as
  287.     InitEnvironment() does that.
  288.     
  289. * ShowAboutBox()
  290.     Calls UModalAlerts::Alert()
  291.     
  292.  
  293. LArray
  294. ------
  295. * Removed PP_Obsolete_Constants support
  296.  
  297.  
  298. LArrayIterator
  299. --------------
  300. * Removed PP_Obsolete_Constants support
  301.  
  302.  
  303. LBroadcasterEditField
  304. ---------------------
  305. * Removed declaration of msg_AllowTargetSwitch constant from
  306.     header file. PP does not use this constant.
  307.  
  308.  
  309. LCicnButton
  310. -----------
  311. * FindHotSpot()
  312. * PointInHotSpot()
  313.     New overrides. Point is within hot spot if it corresponds to
  314.     a non-white pixel in the icon mask.
  315.  
  316.  
  317. LControlImp
  318. -----------
  319. * Hilite()
  320.     New function
  321.     
  322.     
  323. LControlPane
  324. ------------
  325. * Added class_ID of 'cpan'
  326.  
  327.  
  328. LDialogBox
  329. ----------
  330. * LDialogBox()
  331.     Declared SWindowInfo& as const
  332.     
  333. * HandleKeyPress()
  334.     Rewrote to use new UKeyFilters::IsEscapeKey() function
  335.     
  336.  
  337. LDocApplication
  338. ---------------
  339. * OpenOrPrintDocList()
  340.     New function. Factors out code for iterating over an AEDescList
  341.     of files that used to be in DoAEOpenOrPrintDoc().
  342.     
  343. * DoAEOpenOrPrintDoc()
  344.     Calls OpenOrPrintDocList()
  345.     
  346. * SendAEOpenDoc()
  347. * SendAECreateDocument()
  348.     Restructured to send AppleEvent with ExecuteAE_No option,
  349.     and to always call OpenDocument()/MakeNewDocument()
  350.     
  351. * SendAEOpenDocList()
  352.     New function. Sends an AppleEvent for opening a list of documents
  353.     for recording, then calls OpenOrPrintDocList().
  354.     
  355.     
  356. LDocument
  357. ---------
  358. * AskSaveAs()
  359.     Use PP_StandardDialogs::AskSaveFile() instead of StandardPutFile().
  360.     Also, handle situation where user "saves file as" using the
  361.     existing file name.
  362.     
  363. * AskConfirmRevert()
  364.     New function. Moved code that was in ObeyCommand. Uses
  365.     new PP_StandardDialogs::AskConfirmRevert() call.
  366.     
  367. * AskSaveChanges()
  368.     New functions. Moved code that was in AttemptClose() and
  369.     AttemptQuitSelf(). Use new PP_StandardDialogs::AskSaveChanges()
  370.     call.
  371.     
  372. * ObeyCommand()
  373.     Call AskConfirmRevert().
  374.     
  375. * AttemptClose()
  376. * AttemptQuitSelf()
  377.     Call AskSaveChanges()
  378.     
  379. * GetFileType()
  380.     New function. Returns the file type (four character code)
  381.     used for saving Documents. Subclasses should override
  382.     if they support saving to files.
  383.     
  384.     
  385. LDragAndDrop
  386. ------------
  387. * HandleDragTracking()
  388. * HandleDragReceive()
  389. * HandleDragSendData()
  390. * HandleDragInput()
  391. * HandleDragDrawing()
  392.     Set err to dragNotAcceptedErr when catching an unknown error
  393.     and don't Signal
  394.  
  395.  
  396. LEditField
  397. ----------
  398. * GetSelection()
  399.     New override. Passes back an AEDesc of the selected text.
  400.     
  401. * LEditField(LStream*)
  402.     Turn off autoscroll for right justified text. Due to
  403.     a bug, this doesn't work.
  404.  
  405.  
  406. LEditText
  407. ---------
  408. * GetSelection()
  409.     New override. Passes back an AEDesc of the selected text.
  410.     
  411. * InitEditText()
  412.     Turn off autoscroll for right justified text. Due to
  413.     a bug, this doesn't work.
  414.     
  415.  
  416. LGAChasingArrowsImp
  417. -------------------
  418. * DrawSelf()
  419.     Draws arrows in gray if inactive
  420.     
  421. * AllocateGWorlds()
  422.     New function. Contains code that used to be in Init().
  423.  
  424. * DisposeGWorlds()
  425.     New function. PP doesn't call this function, but you can if you
  426.     wish to dispose of the GWorlds used internally by this class.
  427.  
  428.  
  429. LGAProgressBarImp
  430. -----------------
  431. * AllocateGWorlds()
  432.     New function. Contains code that used to be in Init().
  433.  
  434. * DisposeGWorlds()
  435.     New function. PP doesn't call this function, but you can if you
  436.     wish to dispose of the GWorlds used internally by this class.
  437.  
  438.  
  439. LGATabsControlImp
  440. -----------------
  441. * Fixed struct describing 'tab#' resource. Defined STabListRec and
  442.     STabInfo structs.
  443.     
  444. * LoadTabTitlesFromTabList()
  445.     Rewrote to use new struct definitions to access tab information
  446.  
  447.  
  448. LGrafPortView
  449. -------------
  450. * GetForeAndBackColors()
  451.     New override
  452.     
  453. * DoKeyPress()
  454.     Changed to return a bool that specifies whether it handled
  455.     the keystroke.
  456.     
  457.     
  458. LGrowZone
  459. ---------
  460. * ~LGrowZone()
  461.     Set sGrowZone to nil
  462.     
  463.     
  464. LHierarchyTable
  465. ---------------
  466. * AddLastChildRow()
  467.     Changed refreshAdjustment to have a value of 0 or 1
  468.     instead of 0 or -1. Avoids warnings about assigning
  469.     a negative number to an unsigned long variable.
  470.  
  471.  
  472. LMenu
  473. -----
  474. * LMenu()
  475.     New constructor for creating menus on-the-fly via
  476.     ::NewMenu() rather than from a resource
  477.     
  478. * MakeNewMacMenu()
  479.     New static function. Wrapper for ::NewMenu() which
  480.     can create an Appearance-savvy menu.
  481.     
  482.  
  483. LMenuBar
  484. --------
  485. * FindMenuItem()
  486. * FindNextCommand()
  487.     Declared as "const"
  488.  
  489.  
  490. LModelDirector
  491. --------------
  492. * HandleCreateElementEvent()
  493.     For case typeObjectSpecifier, assign target to return value
  494.     of target->GetInsertionTarget(typeNull)
  495.     
  496.     For case typeInsertionLoc, handle situation where reference
  497.     object is the default (application) object.
  498.     
  499.     Don't put element in reply AppleEvent if the reply
  500.     is typeNull.
  501.     
  502. * Removed functions for handling open document and print document
  503.     AppleEvents:
  504.     
  505.         HandleOpenOrPrintEvent()
  506.         OpenOrPrintEventHandler()
  507.         
  508.     There's no need to special case those events. The regular
  509.     HandleAppleEvent() function that handles all other events
  510.     works just fine for open document and print document events.
  511.     
  512. * InstallCallBacks()
  513.     Removed special handlers for open and print events. The
  514.     generic handler is sufficient.
  515.     
  516. * AppleEventHandler()
  517. * CreateElementEventHandler()
  518. * ModelObjectAccessor()
  519. * ModelObjectListAccessor()
  520. * OSLDisposeToken()
  521. * OSLCompareObjects()
  522. * OSLCountObjects()
  523.     Set err to errAEEventNotHandled or errNoSuchObject when catching
  524.     an unknown    error and don't Signal
  525.     
  526. * OSLCompareObjects()
  527.     Implemented workaround for Apple's unlocked Handle bug as
  528.     discussed in Technote 1095.
  529.     
  530.  
  531. LModelObject
  532. ------------
  533. * HandleClone()
  534.     For case typeInsertionLoc, handle situation where reference
  535.     object is the default (application) object.
  536.  
  537.  
  538. LOffscreenView
  539. --------------
  540. * Draw()
  541.     Erase to background color before calling LView::Draw() to
  542.     be consistent with what happens when drawing offscreen
  543.     
  544. * DrawOffscreen()
  545.     Call FocusExposed() instead of (IsVisible() && FocusDraw()).
  546.     It does the same thing.
  547.     
  548.  
  549. LOutlineTable
  550. -------------
  551. * GetLocalCellRect()
  552.     New override which does NOT set the rectangle to {0, 0, 0, 0}
  553.     if the Image is outside the Frame.
  554.     
  555. * InsertCols()
  556.     Added default parameter values for inDataPtr, inDataSize,
  557.     and inRefresh.
  558.  
  559.  
  560. LPageController
  561. ---------------
  562. * SetSelectedPageButtonByIndex()
  563.     Removed bounds checks since LArray::FetchItemAt() checks
  564.     the bounds
  565.     
  566. * GetPageIndex()
  567.     Call to FetchIndexOf() was wrong. Need to pass address of
  568.     pageButton.
  569.     
  570. * GetTextTraitsID()
  571. * GetCurrentIndex()
  572. * GetPageButtonView()
  573.     Declared non-virtual and const
  574.  
  575. * GetPageButtons()
  576. * GetNextIndex()
  577. * GetControllerMessage()
  578. * HaveScrollArrows()
  579. * HaveScrolling()
  580.     Declared non-virtual
  581.  
  582. * RevealSelectedPageButton()
  583.     Handle case where buttons need to scroll to the right 
  584.  
  585.  
  586. LPane
  587. -----
  588. * GetSelection()
  589.     New function. Override to pass back an AEDesc describing
  590.     the current selection within the Pane (if the concept of
  591.     a selection is meaningful).
  592.     
  593.  
  594. LPlaceHolder
  595. ------------
  596. * InstallOccupant()
  597. * RemoveOccupant()
  598.     Declared virtual
  599.  
  600.  
  601. LPopupGroupBox
  602. --------------
  603. * Use kControlGroupBoxMenuHandleTag instead of
  604.     kControlPopupButtonMenuHandleTag. The two constants are
  605.     the same now, but may be different under Allegro.
  606.  
  607.  
  608. LPrintout
  609. ---------
  610. * GetForeAndBackColors()
  611.     New override
  612.     
  613. * Declared EPrintAttr as a typedef UInt32 instead of an enum
  614.  
  615.  
  616. LScrollBar
  617. ----------
  618. * ActivateSelf()
  619.     New override. Set hiliting to kControlNoPart.
  620.     
  621. * DeactivateSelf()
  622.     New override. Set hiliting to kControlDisabledPart.
  623.  
  624.  
  625. LScrollerView
  626. -------------
  627. * ActivateSelf()
  628.     Don't show scroll bars. LScrollBar activates them.
  629.  
  630. * DeactivateSelf()
  631.     Don't hide scroll bars. LScrollBar deactivates them.
  632.     
  633. * InvalidateBorder()
  634.     New function called when activating/deactivating to
  635.     redraw the border with the right color.
  636.     
  637. * ListenToMessage()
  638.     Call AdjustScrollBars() for case msg_ThumbDragged
  639.  
  640.  
  641. LSharable
  642. ---------
  643. * LSharable() [copy constructor]
  644. * operator = ()
  645.     New functions. Copy has no users.
  646.  
  647.  
  648. LStdControlImp
  649. --------------
  650. * Hilite()
  651.     New override. Calls ::HiliteControl()
  652.     
  653. * FocusImp()
  654.     Set text traits of both the current and control owner
  655.     port (if they are different)
  656.     
  657.  
  658. LStdPopupMenu
  659. -------------
  660. * GetMacMenuH()
  661.     Check for nil dataH
  662.     Declared "const"
  663.     
  664.  
  665. LStdScrollBarImp
  666. ----------------
  667. * TrackAction()
  668.     Add try/catch block to prevent exception from going back
  669.     through the Toolbox
  670.  
  671.  
  672. LString
  673. -------
  674. * CStringLength()
  675.     Made more efficient by consolodating "for" and "if" statements
  676.     into a single "while" loop.
  677.     
  678. * Removed operator double_t()
  679.     Replaced by operator double() and operator long double().
  680.     
  681. * operator double()
  682.     Conversion operator which interprets the string as a
  683.     double floating point number
  684.  
  685. * operator long double()
  686.     Conversion operator which interprets the string as a
  687.     long double floating point number
  688.  
  689. * Assign( long double ) with formatting
  690.     Two versions for setting a string from a long double number.
  691.     One version uses an optional formatting string, the other uses
  692.     formatting data structures (which you can get from
  693.     FetchFloatFormat).
  694.     
  695.     These functions call ExtendedToString(), which gives you much
  696.     more control over the number format than the Assign( double_t )
  697.     function, which calls dec2str().
  698.     
  699. * Assign( double_t ) changed to Assign( long double )
  700.     Existing Assign from floating point changed to use long double
  701.     instead of double_t.
  702.  
  703. * FetchFloatFormat()
  704.     Static utility which passes back Toolbox data structures
  705.     for number formatting given a formatting string. For
  706.     information about formatting strings, see IM:Text 5-39
  707.     
  708.     The formatting information controls how a floating point
  709.     number is represented as a string. This information includes
  710.     localization data such as the decimal and thousands separator
  711.     (period vs. comma).
  712.  
  713. * StringToLongDouble()
  714.     Two overloaded static utilities for converting a Pascal
  715.     string to a long double number. One version uses a formatting
  716.     string, the other uses formatting data structures (which
  717.     you can get from FetchFloatFormat).
  718.     
  719. * Assign( Handle )
  720.     When Handle is bigger than the string, copy as much as
  721.     fits rather than nother.
  722.     
  723. * operator = ( Int16 )
  724. * Assign( Int16 )
  725. * operator += ( Int16 )
  726. * Append( Int16 )
  727.     New functions. Convert Int16 to a string. Similar to Int32
  728.     versions of these functions.
  729.  
  730.  
  731. LStr255
  732. -------
  733. * New constructors from long double with formatting which
  734.     call the corresponding Assign() functions.
  735.     
  736. * New constructor and operator= from Int16
  737.     
  738.     
  739. LStringRef
  740. ----------
  741. * New subclass of LString which doesn't allocate space for the
  742.     string. It relies on the client to set the StringPtr to
  743.     an existing string. Thus you can use the functions
  744.     of the LString class on a string stored in another data
  745.     structure. For example,
  746.     
  747.         FSSpec    mySpec;        // File Specification
  748.         
  749.             // ... Code which obtains an FSSpec ...
  750.             
  751.             // Make LStringRef that points to the name
  752.             // field within the FSSpec
  753.             
  754.         LStringRef    fileName(sizeof(mySpec.name), mySpec.name);
  755.         
  756.             // Now we can manipulate the file name using
  757.             // LString functions
  758.         
  759.         fileName += " copy";        // Append text to file name
  760.  
  761.  
  762. LTextEditView
  763. -------------
  764. * GetSelection()
  765.     New override. Passes back an AEDesc of the selected text.
  766.  
  767.  
  768. LToggleButton
  769. -------------
  770. * Defined a copy constructor
  771.  
  772.  
  773. LView
  774. -----
  775. * ScrollImageBy()
  776.     Calling UpdatePort() before calling ScrollBits(). This fixes
  777.     problems when the view scrolls while there is a pending
  778.     update event
  779.     
  780.  
  781. LWindow
  782. -------
  783. * Declared EWindAttr values as const's instead of part of an enum
  784.  
  785. * Defined window_InFront and window_InBack as const's instead
  786.     of #define's
  787.     
  788. * SendAESetZoom()
  789.     Restructured to send AppleEvent with ExecuteAE_No option
  790.     and to always call DoSetZoom()
  791.  
  792.  
  793. PowerPlant Resorcerer TMPLs
  794. ---------------------------
  795. * Added definitions in 'PPob' for:
  796.     LTabGroupView
  797.     LCMAttachment
  798.  
  799.  
  800. PowerPlant.r
  801. ------------
  802. * Added definitions in 'PPob' for:
  803.     LTabGroupView
  804.     LCMAttachment
  805.  
  806.  
  807. PP Copy & Customize.ppob
  808. ------------------------
  809. * Created default Txtr resources for system font (128) and application
  810.     font (129). They are set to default settings (size 0, normal style,
  811.     default justification, srcCopy).
  812.     
  813. * Added two strings to STR# 200 for the titles of the Nav Services
  814.     open and save dialogs
  815.         
  816.     
  817. PP Copy & Customize.rsrc
  818. ------------------------
  819. * Set attributes of ALRT/DITL 204 (Low memory warning) to preloaded
  820.     and locked instead of purgeable. This way, these resources are
  821.     always present so they don't need to be loaded in low memory
  822.     situations.
  823.     
  824.     
  825. PP DebugAlerts.rsrc
  826. -------------------
  827. * Set attributes of ALRT/DITL resources (throw and signal alerts)
  828.     to preloaded and locked instead of purgeable. Also made the
  829.     text area larger to accommodate long error messages.
  830.  
  831.  
  832. PP_Constants.h
  833. --------------
  834. * Defined constants for ExecuteAE_Yes and ExecuteAE_No for specifying
  835.     whether or not to execute an AppleEvent
  836.     
  837. * Declared Str_Empty, Point_00, and Rect_0000 as extern and put
  838.     actual definitions inside PP_Constants.cp
  839.     
  840. * Defined delay_Feedback constant for specifying the number of ticks
  841.     to delay when presenting visual feedback
  842.  
  843.  
  844. PP_KeyCodes.h
  845. -------------
  846. * Added char_Dash constant
  847.  
  848.  
  849. PP_MacHeaders.c
  850. ---------------
  851. * Updated to Universal Headers 3.1
  852.  
  853.  
  854. PP_Macros.h
  855. -----------
  856. * Removed support for PP_Obsolete_Constants and PP_Obsolete_Array_API
  857.  
  858. * Added macros for a PowerPlant namespace
  859.  
  860. * Added macros for choosing implmentation of standard dialogs
  861.  
  862. * Added macro for whether to use the old PP integer types
  863.     
  864.  
  865. PP_Resources.h
  866. --------------
  867. * Added definitions of PP and Toolbox resources types using
  868.     the FOUR_CHAR_CODE() macro (from <ConditionalMacros.h>):
  869.     
  870.     ResType_PPob
  871.     ResType_IDList
  872.     ResType_MenuCommands
  873.     ResType_AETable
  874.     ResType_TextTraits
  875.     ResType_MacWindow
  876.     ResType_MenuBar
  877.     ResType_MenuDefProc
  878.     ResType_Driver
  879.     
  880. * Added constant for new strings in STRx_Standards
  881.     const SInt16    str_OpenDialogTitle            = 3;
  882.     const SInt16    str_SaveDialogTitle            = 4;
  883.  
  884.     These strings are used for the titles of the Nav Services
  885.     open and save dialogs
  886.  
  887.  
  888. StAEDescriptor
  889. --------------
  890. * Dispose()
  891.     New function which disposes the AEDesc and resets it to
  892.     a null descriptor
  893.  
  894. * IsNull()
  895.     New functions which returns whether the AEDesc is a
  896.     null descriptor
  897.     
  898. * operator = ()
  899. * Assign()
  900.     New functions for setting an existing descriptor to
  901.     a new value. Supported value types are:
  902.         StAEDescriptor&
  903.         Boolean
  904.         SInt16
  905.         SInt32
  906.         OSType
  907.         ConstStringPtr
  908.         FSSpec
  909.  
  910.  
  911. StDeleter
  912. ---------
  913. * StDeleter()
  914.     Added default constructor
  915.     
  916. * StDeleter(T*)
  917.     Removed default parameter value of nil so that this is no longer
  918.     the default constructor
  919.  
  920.  
  921. StFractionalPenWidth
  922. --------------------
  923. * ~StFractionalPenWidth()
  924.     Reset lineWidthP after call to PicComment() since Handle
  925.     might have moved
  926.  
  927.  
  928. StHandleBlock
  929. -------------
  930. * StHandleBlock() Copy Constructor
  931.     Check for nil Handle before copying
  932.     
  933. * operator=()
  934.     Check for nil Handle and don't take ownership unless copy succeeds
  935.     
  936. * Dispose()
  937.     Changed to work for Handles that are resources
  938.     
  939. * IsValid()
  940.     New function. Returns true if Handle isn't nil.
  941.     
  942. * IsAResource()
  943.     New function. Returns whether the Handle is a Resource.
  944.  
  945.  
  946. StHandleLocker
  947. --------------
  948. * Adopt()
  949. * Release()
  950. * RestoreLockState()
  951.     New functions
  952.     
  953. * StHandleLocker()
  954.     Changed to use Adopt()
  955.     
  956. * ~StHandleLocker()
  957.     Changed to use RestoreLockState()
  958.     
  959.     
  960. StMenuHandleDisposer
  961. --------------------
  962. * New class whose destructor disposes of a MenuHandle
  963.     (defined in LMenu.h)
  964.  
  965.     
  966. StPointerBlock
  967. --------------
  968. * IsValid()
  969.     New function. Returns true is Ptr isn't nil.
  970.     
  971.  
  972. StResource
  973. ----------
  974. * Changed name of Release() to Dispose() to match the naming
  975.     conventions used by StHandleBlock and StDeleter.
  976.     
  977.     Also improved the test for determining whether the
  978.     Handle is not a Resource anymore (i.e., it was detached).
  979.     
  980. * Adopt()
  981.     New function which replaces the underlying Resource handle
  982.     
  983. * Declared, but didn't implement, copy constructor and assignement
  984.     operator in order to disallow those functions
  985.     
  986. * Get()
  987.     New function. Returns the Resource handle.
  988.     
  989. * IsValid()
  990.     New function. Returns true if Resource handle isn't nil.
  991.     
  992.     
  993. StUnhiliteMenu
  994. --------------
  995. * Don't unhilite menu until at least 8 ticks have passed. For key
  996.     commands, this leaves the menu title hilited long enough
  997.     for the user to notice it.
  998.  
  999.  
  1000. StVisRgn
  1001. --------
  1002. * StVisRgn()
  1003.     Use inPort instead of mGrafPtr when saving top left. Both point
  1004.     to the same port, but the code is smaller using the local variable
  1005.     rather than the member variable.
  1006.  
  1007.  
  1008. TArray
  1009. ------
  1010. * Removed PP_Obsolete_Array_API support
  1011.  
  1012. * TArray()
  1013.     Added "true" default constructor with no parameters, not even
  1014.     ones with default values. This works around a problem where
  1015.     the compiler would warn about non-inlined functions for
  1016.     classes that have TArray member variables.
  1017.     
  1018. * TArray(LComparator*, Boolean)
  1019.     Removed default value of nil for LComparator* so that this is
  1020.     no longer the default constructor.
  1021.  
  1022.  
  1023. TString
  1024. -------
  1025. * New constructors from long double with formatting which
  1026.     call the corresponding Assign() functions.
  1027.     
  1028. * New constructor and operator= from Int16
  1029.     
  1030.     
  1031. UAppleEventsMgr
  1032. ---------------
  1033. * Removed definition of AETable_Type constant, replacing it with
  1034.     resType_AETable which is defined in PP_Resources.h
  1035.  
  1036.  
  1037. UControlRegistry
  1038. ----------------
  1039. * RegisterClasses()
  1040.     If Appearance version is less than 1.0.1 (AM 1.0 shipped with
  1041.     Mac OS 8.0), register the GA imps for LPopupButton and
  1042.     LPopupGroupBox. Those classes require AM 1.0.1 or later.
  1043.  
  1044.  
  1045. UDebugging
  1046. ----------
  1047. * Changed UDebugging from a class with all static members to
  1048.     a namespace. Code accessing members still use the
  1049.     UDebugging:: qualifier, but it's a namespace rather than
  1050.     a class.
  1051.  
  1052. * debugAction_LowLevelDebugger and debugAction_SourceDebugger are
  1053.     now obsolete constants (but still defined). There is a single
  1054.     debugAction_Debugger constant.
  1055.     
  1056.     The separate low-level/source options aren't needed since
  1057.     the MW Debugger has a preference option for controlling whether
  1058.     it intercepts Debugger() calls or not.
  1059.     
  1060. * The following macros for breaking into the debugger are obsolete:
  1061.     BreakToLowLevelDebugger_
  1062.     BreakStrToLowLevelDebugger_
  1063.     BreakToSourceDebugger_
  1064.     BreakStrToSourceDebugger_
  1065.     
  1066.     Just call Debugger or DebugStr directly and set the MW
  1067.     Debugger preference option for whether to break into the
  1068.     source or low-level debugger.
  1069.  
  1070. * Moved gDebugThrow and gDebugSignal globals inside the
  1071.     UDebugging namespace.
  1072.     
  1073. * SetDebugThrow()
  1074. * SetDebugSignal()
  1075. * GetDebugThrow()
  1076. * GetDebugSignal()
  1077.     New functions for accessing the gDebugThrow and gDebugSignal
  1078.     static variables
  1079.     
  1080.     You can still use the SetDebugThrow_ and SetDebugSignal_
  1081.     macros instead of the "set" accessor functions.
  1082.     
  1083. * DebugThrow()
  1084.     New inline function which contains code that used to be in the
  1085.     Throw_() macro
  1086.     
  1087.     Checks debugAction_Debugger instead of the obsolete
  1088.     debugAction_LowLevelDebugger and debugAction_SourceDebugger
  1089.     
  1090. * Throw_()
  1091.     Macro now calls UDebugging::DebugThrow() inline function
  1092.     
  1093. * SignalPStr_()
  1094.     Checks debugAction_Debugger instead of the obsolete
  1095.     debugAction_LowLevelDebugger and debugAction_SourceDebugger
  1096.         
  1097.  
  1098. UEnvironment
  1099. ------------
  1100. * InitEnvironment()
  1101.     - Fixed test for Appearance version 1.0.1
  1102.  
  1103.  
  1104. UKeyFilters
  1105. -----------
  1106. * IsEscapeKey()
  1107.     New function which returns whether a key down event is
  1108.     an escape key press
  1109.     
  1110.     
  1111. UQDOperators
  1112. ------------
  1113. * New header file defining inline comparison operators for
  1114.     the QuickDraw types RGBColor, Point, and Rect
  1115.  
  1116.  
  1117. UScreenPort
  1118. -----------
  1119. * Dispose()
  1120.     Call ClosePort() or CloseCPort()
  1121.     
  1122.     
  1123. UStandardFile
  1124. -------------
  1125. * GetDirectory()
  1126.     Changed name of parameter from ioReply to outReply since
  1127.     it is an output only parameter.
  1128.     
  1129.     Changed to use functions in UClassicDialogs.
  1130.     
  1131.     This function is almost identical to
  1132.     UClassicDialogs::AskChooseFolder(). The only difference
  1133.     is that GetDirectory() lets you specify the ID of the
  1134.     DLOG resource.
  1135.     
  1136. * FileFilter_Directories()
  1137. * DialogHook_SelectDirectory()
  1138. * SetSelectButtonTitle()
  1139.     Removed. Equivalent functions are in UClassicDialogs.
  1140.     
  1141.     
  1142. UTextDrawing
  1143. ------------
  1144. * DrawWithJustification()
  1145.     Call TextWidth() to see if all text fits on one line before
  1146.     calling StyledTextBreak(). This works around an apparent bug
  1147.     in StyledTextBreak when the text is exactly the same width as
  1148.     the rectangle in which to draw.
  1149.     
  1150.     
  1151. UTextTraits
  1152. -----------
  1153. * SetTETextTraits()
  1154.     Adjusted logic to remove "return" from middle of function